Administration des Listes de consultation : lutserver et emulutsrebuild
Le service d'arrière-plan lutserver s’assure que les entrées de la Liste de consultation sont toujours synchronisées avec les enregistrements du système EMu. Ce service a supprimé la nécessité des versions précédentes d'EMu de reconstruire les Listes de consultation chaque nuit.
Le programme de reconstruction de la Liste de consultation est toujours fourni, mais il applique désormais les changements à la table eluts plutôt que de reconstruire complètement la table. Le service Liste de consultation signifie que les reconstructions ne sont nécessaires que si la table Liste de consultation est corrompue, ou si les utilisateurs suppriment par accident des enregistrements qui sont encore utilisés.
Bien qu'en théorie les tables Liste de consultation n'ont plus besoin d'être reconstruites, il peut y avoir des occasions où les tables Liste de consultation doivent être mises à jour manuellement. Il serait utile, par exemple de pouvoir régénérer une entrée manquante si quelqu'un a supprimé un enregistrement par accident.
Le programme emulutsrebuild côté serveur consulte chaque enregistrement EMu et vérifie que les valeurs des enregistrements figurent dans la table de la Liste de consultation. Si une valeur est absente, une nouvelle entrée est créée. Toutes les entrées qui ne sont plus utilisées sont supprimées, sauf si elles sont Constantes.
Vous trouverez ici des détails sur le service d'arrière-plan lutserver et sur la manière de reconstruire, si nécessaire, une Liste de consultation :
Le serveur qui gère la mise à jour de la table eluts du service Liste de consultation est appelé lutserver. lutserver s’exécute sur la machine serveur d'EMu, attendant les demandes de mise à jour des entrées de la Liste de consultation. Les demandes sont générées par une extension de trace d'audit qui récupère tous les enregistrements supprimés et modifiés et détermine quelles Listes de consultation doivent être mises à jour.
Le processus peut être schématisé comme suit :
Audit Server (utils/auditserver)
¯
Lookup List Audit Plugin (etc/audit/luts.pl)
¯
Lookup List Service Data (loads/luts/data/*)
¯
Lookup List Server (utils/lutserver)
¯
Lookup List Table (eluts)
Dans cet exemple, un utilisateur modifie la valeur Ville dans un enregistrement de Bendigo
à Sandhurst et sauvegarde l'enregistrement. Les étapes suivantes se déroulent :
- Lorsque l'utilisateur sauvegarde l'enregistrement, le serveur EMu génère une description XML des modifications effectuées. Le Serveur d'audit (auditserver) charge ces modifications et les transmet à toutes les extensions enregistrées. Les services Liste de consultation enregistrent l’extension Audit de la Liste de consultation lors du démarrage du Serveur d'audit. Pour notre exemple d’enregistrement, les modifications montreront que
Bendigo
a été changé en Sandhurst dans la colonne Ville. - Le Plugin Audit de Liste de consultation vérifie les changements effectués par le Serveur Audit. Pour chaque colonne modifiée, il vérifie si une Liste de consultation est associée à la colonne. Pour notre exemple, il déterminera que la colonne Ville est associée à Liste de consultation Lieu. Il examinera ensuite les deux valeurs et leurs opérations associées. La valeur
Bendigo
a une opération de suppression (delete) (puisqu’elle a été enlevée) et la valeur Sandhurst a une opération d'insertion (insert) (puisque c'est la nouvelle valeur). Puisque le client Windows a été utilisé pour sauvegarder l'enregistrement, le Plugin Audit va ignorer l'opération d'insertion puisque l'utilisateur aura été invité à ajouter la nouvelle entrée à la Liste de consultation Lieu si elle n'existait pas déjà. L'opération de suppression est transmise au Serveur Liste de consultation pour traitement. - Le plugin Audit de la Liste de consultation écrit un fichier contenant les :
- Opération effectuée (suppression)
- Valeur supprimée (Bendigo)
- Nom de la Liste de consultation (Emplacement)
- Colonne modifiée (Ville)
Le fichier se trouve dans le répertoire loads/luts/data. Le format du nom de fichier est date.time.table.irn, où :
- date est une date à huit chiffres au format aaaammdd.
- time est une heure à six chiffres au format hhmmss.
- Table est la table de base de données dans laquelle l'enregistrement a été modifié.
- irn est le numéro de clé de l'enregistrement modifié.
Un exemple de nom de fichier serait : 20121026.133308.ecatalogue.375.
- Le serveur Liste de consultation récupère tous les fichiers dans le répertoire loads/luts/data et les classe par ordre de date/heure. Il est important que les fichiers soient traités dans l'ordre où ils ont été créés, sinon des problèmes de synchronisation peuvent survenir. Le serveur Liste de recherche lit le contenu de chaque fichier et en extrait les informations. Puis, pour chaque Liste de consultation du fichier, il détermine l'opération à effectuer (insertion ou suppression) :
- Pour une insertion, il vérifie si la valeur figure déjà dans la Liste de consultation et si ce n'est pas le cas, il insère une nouvelle valeur dans la table eluts.
- Pour une suppression, il vérifie si la valeur est utilisée quelque part dans le système EMu pour le nom de la Liste de consultation. Si la valeur n'est pas utilisée, l'enregistrement est supprimé de la table eluts (à condition qu'il ne soit pas Constant).
Une fois que le fichier a été traité, il est supprimé. Une fois que tous les fichiers ont été traités, le serveur Liste de consultation attend les nouveaux fichiers à traiter.
La raison pour tant de mesures est que les plugins audit doivent être rapides afin que le Serveur Audit puisse traiter les enregistrements d'audit rapidement. Pour s'assurer que le plugin audit soit rapide, le traitement principal de la Liste de consultation est retiré du plugin audit et déplacé sur le Serveur Liste de consultation. La division garantit que le Serveur Audit se tient à jour des changements d’audit, même quand le Serveur Liste de consultation est à la traîne.
Le Serveur Liste de consultation gère toutes les opérations de suppression, c’est-à-dire qu’il vérifie si une entrée Liste de consultation est toujours utilisée et la supprime si elle ne l’est pas. Il gère également les insertions (c’est-à-dire les nouvelles valeurs) à partir de toutes les sources sauf le client Windows.
Le Serveur Liste de consultation est conforme à l'entrée de Registre Lookup et à l'entrée de Registre Lookup Exact :
- Si une colonne a Lookup Exact d’établie à
true
, alors toutes les comparaisons avec les entrées existantes dans la table Liste de consultation sont effectuées pour des correspondances exactes, c.-à-d. la casse des caractères et la ponctuation doivent correspondre exactement. - Si Lookup Exact n'est pas activé, les casses de caractères et la ponctuation sont ignorées pour les comparaisons de valeurs.
L'entrée de Registre Lookup est utilisée pour contrôler les flags lors de l'ajout de nouvelles valeurs à une Liste de consultation. Le tableau ci-dessous répertorie chaque paramètre et examine comment le Serveur Liste de consultation implémente la fonctionnalité requise. Les paramètres de l'entrée de Registre Lookup sont généralement établis par colonne.
Paramètre |
Description |
---|---|
Skip
|
L'entrée ne sera pas vérifiée contre la Liste de consultation et ne sera pas ajoutée à la Liste de consultation. Si la colonne avec Par exemple : nous avons une Liste de consultation appelée Lieu avec une hiérarchie de Pays>État>Ville Si une nouvelle entrée Australie>Victoria>Melbourne est ajoutée, alors trois enregistrements seront généralement ajoutés à la Liste de consultation Location : Australie Australie> Australie> Si Australie Australie> |
|
Les valeurs entrées dans le champ doivent exister dans la Liste de consultation : une nouvelle entrée ne sera pas ajoutée à la Liste de consultation. |
ReadWrite
|
Le paramètre |
|
Le paramètre |
|
Si l'entrée n'existe pas, une nouvelle entrée est créée avec Caché d’activé. Si une entrée existe déjà et le flag Utilisé est désactivé, il est activé. |
Enfin, le Serveur Liste de consultation ne supprimera pas d’entrée de la table Liste de consultation ayant Constant d’activé.
Le serveur Liste de consultation, lutserver, fournit la fonctionnalité nécessaire pour synchroniser la table Liste de consultation avec les valeurs utilisées dans le système EMu. L'ajout du serveur élimine le besoin de reconstruire les tables de la Liste de consultation chaque nuit (ou autre).
Le répertoire Luts est un répertoire sur le serveur EMu. Il contient des fichiers texte avec des valeurs par défaut pour des Listes de consultation spécifiques. Pendant le processus de reconstruction des Listes de consultation, toutes les valeurs de ces fichiers texte sont ajoutées à leurs Liste de consultation respectives.
Les fichiers textes, dans le répertoire Luts peuvent être utilisés pour l'import de valeurs multiples telles que des lieux et/ou des codes postaux dans les listes de consultation. Ces valeurs seront ajoutées à la Liste de consultation même si elles n'existent pas dans un enregistrement.
Avant EMu 4.1, le programme côté serveur emulutsrebuild reconstruit les tables Liste de consultation chaque nuit, gardant les valeurs dans les Listes de consultation synchronisées avec les valeurs entrées ce jour dans les champs ou ajoutées à un enregistrement Liste de consultation dans le module Listes de consultation.
L'introduction de la tâche de fond des Listes de consultation (lutserver) avec EMu 4.1 signifie que les entrées Liste de consultation sont désormais toujours synchronisées avec les enregistrements dans le système EMu, supprimant le besoin de reconstruire les Listes de consultation chaque nuit.
Note: La tâche de fond des Listes de consultation (lutserver) signifie que les reconstructions ne sont nécessaires que si la table Liste de consultation table devient corrompue, ou si les utilisateurs suppriment des enregistrements qui sont encore utilisés par accident.
Bien qu'en théorie les tables Liste de consultation n'ont plus besoin d'être reconstruites, il peut y avoir des occasions où les tables Liste de consultation doivent être mises à jour manuellement. Il serait utile, par exemple de pouvoir régénérer une entrée manquante si quelqu'un a supprimé un enregistrement par accident.
Le programme emulutsrebuild côté serveur a été réécrit pour fonctionner avec l’architecture serveur de la Liste de consultation. Le programme ne génère plus un fichier de données contenant toutes les entrées de la Liste de consultation qui est ensuite chargé dans une table de Liste de consultation vide. Au lieu de cela, le programme consulte désormais chaque enregistrement EMu et vérifie que les valeurs des enregistrements figurent dans la table Liste de consultation. Si une valeur est absente, une nouvelle entrée est créée. Toutes les entrées qui ne sont plus utilisées sont supprimées, sauf si elles sont Constantes.
Le processus de reconstruction se déroule en deux étapes. La première étape consiste à générer une liste de tous les changements qui doivent être appliqués à la table Liste de consultation. Cette étape est la phase de génération des données. Il existe trois types de changements possibles :
- insert - nouveaux enregistrements à ajouter à la table Liste de consultation.
- update - enregistrements existants dont les indicateurs doivent être ajustés (Caché, Utilisé, Constant).
- delete - enregistrements existants qui ne sont plus nécessaires.
Les données relatives à chacun des changements ci-dessus sont placées dans le répertoire Luts dans des fichiers appelés data.insert, data.update et data.delete respectivement.
Une fois la phase de génération des données terminée, la phase de chargement est exécutée. Dans cette phase, les fichiers générés sont chargés dans la table Liste de consultation. Une fois le chargement terminé, la reconstruction de la table Liste de consultation est terminée.
Le message d'utilisation pour emulutsrebuild est :
Usage: emulutsrebuild [-dlmqtv] [lookup list ...]
|
ne produit que des fichiers de chargement de données de table de consultation |
|
charge rapidement les modifications de consultation (met eluts hors ligne) |
|
charge uniquement le fichier de données de la table de consultation |
|
inclut les fichiers texte de la liste de consultation en reconstruction |
|
mode en clair, imprime les informations de débogage |
Le tableau suivant décrit chacune des options :
Option | Description | |||||
---|---|---|---|---|---|---|
|
Exécute uniquement la phase de génération des données : les fichiers de données à charger sont générés mais non appliqués. |
|||||
|
Saute la phase de génération des données et exécute seulement la phase de chargement. Les fichiers de données à charger sont supposés existants. |
|||||
|
Détermine si la table Liste de consultation doit être mise hors ligne pendant que la phase de chargement est en cours. Si l'option |
|||||
|
Utile pour suivre ce que la phase de génération des données produit. Chaque entrée à insérer, mettre à jour ou supprimer est affichée sur l'écran (et ajoutée au fichier de données approprié). |
|||||
-t
|
Indique à emulutsrebuild d'inclure les fichiers texte trouvés dans les répertoires # # Les lignes commençant par un dièse sont des commentaires # [-]nom de la liste de consultation|valeur 1[|valeur 2|...][=ordretri] où : |
|||||
|
Lorsqu'une entrée de hiérarchie est spécifiée, il n'est pas nécessaire d'ajouter les niveaux supérieurs de la hiérarchie puisque ceux-ci sont automatiquement ajoutés. Par exemple, si un fichier texte contient :
Location|Australia|Victoria|Bendigo
alors trois entrées sont générées. Les entrées reviennent au même que de spécifier :
Location|Australia
Location|Australia|Victoria
Location|Australia|Victoria|Bendigo
L'utilisation de fichiers textes fournit un mécanisme pratique pour le pré-chargement des Listes de consultation. Comme indiqué ci-dessus, chaque entrée chargée aura Constant d’activé, ce qui signifie que l'entrée persistera même si elle n'est pas utilisée. La seule façon de supprimer une telle entrée est de localiser l’enregistrement dans le module Liste de consultation et de la supprimer manuellement.
Un administrateur système peut configurer une table pour qu’elle soit omise quand les Listes de consultation sont en cours de reconstruction. Si une ligne :
RELUTS=no
est trouvée dans un fichier appelé emuoptions dans le répertoire de base de données, emulutsrebuild ne vérifiera pas les données de cette table.
Les arguments pour emulutsrebuild sont une liste de noms de Listes de consultation à reconstruire. Si aucune liste n'est fournie, toutes les Listes de consultation sont vérifiées. Les exemples suivants traitent certaines utilisations de emulutsrebuild :
La commande utilisée pour reconstruire toutes les Listes de consultation est :
emulutsrebuild -t
Il ne devrait pas être nécessaire d'exécuter cette commande. Le Serveur Lookup List maintient la synchronisation des Listes de consultation. La commande peut être utilisée pour s'assurer que la table Liste de consultation est correctement synchronisée.
La commande utilisée pour vérifier si la table Liste de consultation est synchronisée est:
emulutsrebuild -d -t -v
Cette commande exécute uniquement la phase de génération des données. La table Liste de consultation n'est pas modifiée. L'option verbose imprime toutes les incohérences trouvées.
La commande utilisée pour reconstruire les Listes de consultation Emplacement et Noms de l’admin est :
emulutsrebuild Location 'Admin Names'
Cette commande reconstruit les Listes de Consultation Emplacement et Noms de l’admin. Comme l'option -t
n'est pas spécifiée, aucune entrée dans les fichiers texte ne sera chargée.
Note: Notez l'utilisation des guillemets simples pour encadrer les noms des Listes de consultation qui contiennent des espaces.